TMC2130 "Silent StepStick" support#5179
Conversation
1686406 to
b85da24
Compare
|
Probably not a good idea to drive the motors at 1.77A (or 2.5A peak) when the maximum is 1.2A, or 2.0A for 100ms short period. |
|
i can put my vote for this one as i will in the end change to those |
|
👍 Nice. I will also change to those someday. I've changed to TMC2100 lately and they are just great. Maybe bed leveling will be an option using the stallguard feature fingerscrossed |
@teemuatlut I haven't studied the code too closely, just adapted it. What change in code would you recommend to address that? |
|
If you don't mind switching the library being used, I have a working Marlin fork of my own that implements this. You can view the changes here. |
You know, that hadn't actually occurred to me, but perhaps. The problem is, many beds are on springs, or just have "springiness" in them, and steppers are typically pretty strong. In many cases they might actually harm the machine before they ever stall. |
b85da24 to
f898410
Compare
@teemuatlut Is that a fork of an existing library — and one that works? Or did you implement it yourself? Does it have all the same method signatures as the code represented in this PR, for advanced settings, etc.? I was under the impression the library I linked to here was some official TMC2130 library. Is there no such thing?
There are a lot more changes made in this PR, such as advanced settings, for example. I think it's probably good to preserve those. Is there some way that your branch and this branch can be combined to get the complete suite of options? |
It's my own library for running TMC2130 steppers. It does work but since I'm the only one ever to use it, there hasn't been much testing yet. I wrote it in the same style as the 26X library and used some code from the SilentStepStick repo. As far as I'm aware of there is no official library, neither from Trinamic nor from Watterot, nor does makertum make any claims to be part of either of them.
Well, this is only my opinion on how to approach this and I surely can provide all those options to Marlin configuration since they are already implemented in the library, but I don't think an end user needs easy access to all the settings when many of them have no application in running a 3DPrinter. If there were an outlier user who needs to alter the driver side stepping wave timings, he could edit the stepper_indirection.cpp file. I'd rather keep the Marlin settings more easily understandable for the average user and provide them with solid default settings. |
|
@thinkyhead regarding bed leveling.: It is possible to reduce the energy the stepper get. The Steppers then get switched on for shorter periods of time. The Idea is energy saving. But this could be used to get a low torque motor. This way the bed or nozzle would not be damaged. The "springiness" could just be an offset if it is equal all over the bed. But this is just theoretical comment. Haven't tried it. |
|
Z axis would be tricky when we're using leadscrews that greatly amplify the torque from the motors and Z also needs to be much more precise compared to X and Y. |
|
I will hopefully have a chance to try this pretty soon. Hoping to integrate 2130's into the MakerArm. |
|
@thinkyhead I've added a macro for users to define their own advanced stepper settings. Maybe this could be something we can use? |
|
Well, you can see I've striven to make it possible to configure settings without diving into files other than the Marlin configuration files. I'd like to preserve that. I wrote to @makertum concerning the "invalid library" issue, but apparently didn't make myself clear enough. I will continue to inquire. |
887b1c9 to
ae5499c
Compare
764982f to
74b730b
Compare
|
Thanks for the feedback @makertum — extremely helpful. I'm excited to see the PR from @teemuatlut. I haven't got too much time to study these units, but I have a project coming up in which I need to use them, and I'm sure bringing it all together will be a master course. In the long run I hope we'll have the best of both libraries, and some user-friendly way to configure everything.
Any way to ensure, programmatically, that that can't happen? |
Could you go more into depth about that? If the driver gets reset, wouldn't the IHOLD and IRUN registers be set to 0 (1/32) and the TOFF also to 0, where the driver wouldn't even be turned on? |
|
Whoops, sorry for the missing subjunctive, let me try again:
So, there's no need to prevent this programmatically: the TMC2130 wakes up in a non-harmful (but also non-functional) state. If the SPI line goes down, or if the naive user forgets to configure the motor current, nothing bad happens. When I wrote the lib, I followed the thinking that a low-level library shouldn't alter this behavior. |
|
Sorry to coming back so late. @makertum I don't wanted to blame on you or your lib is great and 100% Working. You did in fact a great job and i'm thankful that you support the community. I did read the Datasheet, i had to. and there is clearly documented if you enable $this you can't use $that. But you can define both in marlin without any feedback that you're doing something wrong. There should be such an option for advanced users to have everything self defined, but this should not the default.
Could imagine to have displayed the filament push force on my display in % (over 100 starts to skip or grind) or get rid of my endstops and have accurate Z probe what is working on every surface. The reason for my Vote to @teemuatlut 's implementation is the marlin part. That's more like going this way what i mentioned above. I would welcome to work on one support instead to invest time in two. There is a lot of work to do, both are far away from finished. |
With combined, do you mean the velocity dependant switching? The three basic modes the drivers support are spreadCycle, stealthChop and the classic constant off time.
There are a couple fixes and some new features that I want to do when I get the chance, but is there something you'd like to see either in the library itself or as a supported feature in Marlin? |
|
@teemuatlut yes i mean the, velocity dependent mode switching. Classic mode would be nice to have, but i think no one would use it. |
|
I can look into it. Let me know if there is something more to make the library more complete. |
|
I just git my RE-ARM for my second printer. Can't wait to give it a try. RE-ARM + RAMPS + Marlin + TMC2130 (delta kossel mini) |
|
Thanks everyone for your feedback on this. We'll continue to get more feedback from users as they start testing this out, I'm sure, and then we'll learn in better detail what they need. We can start a dedicated TMC2130 topic that that time. @f3rr I'll start a Re-ARM topic pretty soon so we can share our experiences. I've tried flashing it with the 32-bit Marlin I've been hacking together based on bobc's work, but that one continually watchdog-resets. I haven't tried the previous 32-bit branch or @esenapaj's branch yet, but I will soon. |
|
Is there any way to verify that the drivers are connected correctly and configured? |
|
You can try the examples that come with the library. Take the X axis belt off first as the examples will start spinning the motor. Do you have the Waterott drivers? |
|
Drivers FYSETC clone. |
|
There have been problems with the clone drivers but they should at least move. |
|
I tried an example, the same thing, no reaction. |
|
Try adding If the result is all F or 0, the communication definitely isn't working. |
|
Result is: |
|
There must be something wrong with either your wiring, which you've already checked, or the drivers themselves. I don't have the clone drivers myself so I can't do any testing with them but this is not the first time I've heard people having problems with them. |
|
Unsolder the wires and solder again. even the colors of the wires took the same as in the picture: https://hackadaycom.files.wordpress.com/2016/09/tmc-wiring-01.jpg still does not work: |
|
Change you |
|
I have both "original" Silent StepStick source from Digi-Key and the clone
one from China.
I was wondering why the Chinese one does such annoying buzzing. May be some
issue in the PCB?
Em 2 de dez de 2017 11:12, "teemuatlut" <notifications@github.com> escreveu:
… Change you CS_PIN to 53.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#5179 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AE-ZE2oGJ31j0g8FO4nB0EdtnYW24io5ks5s8Uy3gaJpZM4Krsp_>
.
|
|
The article and the picture was created by another author and he has a library of his own. @alexborro It's hard to tell without comparing the schematics. Maybe they used different components or left some components out completely. |
|
so what legs do I use to make marlin work? |
|
They're named |
|
quote from description:
I tried to use these pins 53,49 |
|
everything, like figured out, now works. |
|
Got a question. Where to look a config which the driver is initialized? |
|
The initialization commands are in stepper_indirection.cpp. |
|
dcStep is not used because as far as I know, it requires the steppers to be in full stepping mode.
Nope.. In dcStep the TMC drives que motor in full step mode; actually it
drives the stepper like a DC motor, so one cannot even say it is full step.
But dcStep mode requires a feedback from driver to uC (dcStep Out) in order
to warn the uC when the driver is "missing" steps. The firmware should
slowdown the speed and gather the info from driver about how many missed
steps to further send it again.
Cheers.
Alex.
2017-12-06 8:16 GMT-02:00 teemuatlut <notifications@github.com>:
… The initialization commands are in stepper_indirection.cpp.
dcStep is not used because as far as I know, it requires the steppers to
be in full stepping mode.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5179 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AE-ZE9gLfh1CE-lbjbOtSkvWO_OXDWeOks5s9mmWgaJpZM4Krsp_>
.
--
*"Não é o mais forte da espécie que sobrevive, nem o mais inteligente. É
aquele que se adapta melhor as mudanças" ( Charles Darwin )*
Alex Borro
|


Derived from the fork https://github.com/makertum/Marlin by @makertum
stepper_indirection.cppConfiguration_adv.h